package com.qidian.tcba.admin.service;

import com.qidian.tcba.admin.model.dto.parkLot.*;
import com.qidian.tcba.admin.model.query.ParkLotRecordManageQueryDTO;
import com.qidian.tcba.admin.model.dto.parkLotManage.ParkLotRecordManageResultDTO;
import com.qidian.tcba.admin.model.dto.parkLotRecord.*;

import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Map;

/**
 * @author:fyl
 * @date 2021/7/6 15:07
 * @Modified By:
 * @Modified Date:
 * @Description:
 */
public interface ParkLotRecordTaskService {


    /**
     * 根据用户id获取各种备案状态的数据
     * @param userId
     * @return
     */
    ParkStatusDataDTO getParkStatusData(int userId);

    /**
     * 获取所有备案列表
     * @param status
     * @param userId
     * @param page
     * @param size
     * @return
     */
    List<ParkRecordListDTO> getParkRecordList(int status, int userId, int page, int size);

    /**
     * 获取用户备案数量
     * @param userId
     * @return
     */
    int getParkRecordNumber(int userId);

    /**
     * 获取最近得两条备案信息
     * @param userId
     * @return
     */
    List<RecentRecordStageDTO> getRecentRecordList(int userId);

    /**
     * 暂存备案信息
     * @return
     */
    ParkLotInfoDTO holdParkRecord(ParkLotSubmitDTO parkLotSubmitDTO,
                                  int userId) throws InvocationTargetException, IllegalAccessException;

    /**
     * 提交备案信息
     * @throws InvocationTargetException
     * @throws IllegalAccessException
     */
    void submitParkRecord(ParkLotSubmitDTO parkLotSubmitDTO,
                          int userId) throws InvocationTargetException, IllegalAccessException;

    /**
     * 获取备案详情
     * @param id
     * @return
     */
    ParkLotInfoDTO getParkLotInfo(int id);

    /**
     * 获取备案流水号
     * @param taskId
     * @return
     */
    String getParkLotSno(int taskId);

    /**
     * 获取停车场设施基本信息
     * @param id
     * @return
     */
    ParkLotBaseInfoDTO getParkLotBaseInfo(int id);

    /**
     * 获取经营管理者基本信息
     * @param id
     * @return
     */
    ParkLotManagerBaseInfoDTO getParkLotManagerBaseInfo(int id);

    /**
     * 获取停车场附属设施基本信息
     * @param id
     * @return
     */
    ParkLotSettingInfoDTO getParkLotSettingInfo(int id);

    /**
     * 获取整改信息
     * @param parkTaskId
     * @return
     */
    ParkLotReformDTO getParkReformInfo(int parkTaskId,int stage);


    /**
     * 提交整改信息
     * @return
     */
    boolean submitReformInfo(ParkLotReformSubmitDTO parkLotReformSubmitDTO) throws InvocationTargetException, IllegalAccessException;

    /**
     * 删除备案任务
     * @param parkTaskId
     * @return
     */
    boolean deleteParkLotRecord(int parkTaskId);

    /**
     * 作废
     * @param id
     * @return
     */
    boolean cancellationParkLot(int id);

    /**
     * 获取代办中心数据
     * @return
     */
    Map<Integer, AgentCenterDTO> getAgentCenterDTOMap(int districtId);

    /**
     * 根据审核环节，状态，区域获取审核列表
     * @param stage
     * @param index
     * @param distinctId
     * @return
     */
    List<ManageParkRecordListDTO> getManageAuditList(int stage,int index,int distinctId,int page,int size);

    /**
     * 获取停车备案管理列表
     * @param parkLotRecordManageQueryDTO
     * @return
     */
    List<ParkLotRecordManageResultDTO> getManageResultList(ParkLotRecordManageQueryDTO parkLotRecordManageQueryDTO);


}
